// 病状图组件的hooks函数
export const usePie = () => {
    /**
     * 生成颜色数据对象
     * @param {Array} data 数据集 
     *  
    **/
    const handleCreateTableData = (data, colorItems) => {
        let color = []
        if (colorItems && colorItems.length > 0) {
            color = colorItems
        } else {
            data && data.length > 0 && data.map((item, index) => {
                item.color = handleRandomColor()
                color.push(item.color)
            })
        }
        return {
            color
        }
    }
    /**
     * 随机生成颜色
     * @param {Array} data 数据集 
     *  
    **/
    const handleRandomColor = () => {
        const letters = '0123456789ABCDEF';
        const uglyColors = ['#000000', '#FFFFFF', '#808080', '#A52A2A']; // 不好的颜色数组
        let color;
        do {
            color = '#' + Array.from({ length: 6 }, () => letters[Math.floor(Math.random() * 16)]).join('');
        } while (uglyColors.includes(color)); // 如果是丑陋颜色，则重新生成
        return color; // 返回生成的颜色
    }
    /**
     * 生成饼图路径
     * @param {Array} data 数据集 
     */
    const handlePiePath = (queryString) => {
        if (!queryString || !queryString.startsWith('?')) {
            // ElMessage.info('请输入正确的查询字符串')
            return {};
        }
        return queryString.slice(1).split('&').reduce((acc, param) => {
            const [key, value] = param.split('=');
            if (key) {
                acc[decodeURIComponent(key)] = decodeURIComponent(value || '');
            }
            return acc;
        }, {});
    }
    /**
     * 
     * @param {Array} data 数据集  data 数据源, dataList:[
    {
        "id": "c3bf6233f0eb4639b58deebe96c91f79",
        "labelKey": "value2"
    }]
     */
    const handlePieData = (dataList, data) => {
        let list = []
        if (dataList && dataList.length > 0) {
            const { labelKey, labelName } = dataList[0]
            if (labelKey === 'value' && labelName === 'name') {
                list = data
            } else if (!labelKey && !labelName) {
                list = []
            } else {
                list = data.map((item) => {
                    return {
                        name: item[labelName],
                        value: item[labelKey],
                    }
                })
            }
        }
        return {
            list
        }
    }
    /**
     * 
     * @param {*} content 传入参数 
     * @returns 
     */
    const safeEval = (content) => {
        const func = new Function(content);
        return func();
    };
    /**
     * 执行用户自定义函数
     * @param {String} content 代码字符串
     * @param {Object} params 传入的参数对象
    **/
    const executeUserFunction = (content, params) => {
        let result;
        try {
            // 检查函数类型
            if (content.startsWith('func:')) {
                const funcBody = content.replace('func:', ''); // 去掉前缀
                // 将 params 作为函数参数进行传递
                const userFunction = new Function('params', `${funcBody}`); // 创建函数
                result = userFunction(params); // 执行函数并传递 params
            } else {
                // 直接执行其他代码
                result = safeEval(content);
            }
            // console.log('执行结果:', result); // 输出执行结果
            return result;
        } catch (error) {
            console.error('代码执行错误:', error);
        }
    }
    return {
        handleCreateTableData,
        handlePiePath,
        handlePieData,
        executeUserFunction,
    }
}
